package com.zhixin.weChat.itChat;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
 * 实现json字符串像js那样的得到以后就可以直接用对象往下一直点的形式，使用字符串传入的形式实现
 * 
 * @author 致心
 * @name ExJsonParse2Value.java
 * @package_name com.zhixin.exFastJson
 * @project_name WeChatRobot
 * @date 2019年9月30日 下午12:46:28
 */
public class ExJson {

	/**
	 * 这个key可以是多层级的，data:liveIndex:2016-09-01[1],
	 * {"name":"感冒指数","day":"2016-09-01","desc":"感冒容易发生，少去人群密集的场所有利于降低感冒的几率。","status":"易发"}
	 * 
	 * @author 致心
	 * @date_time:2019年9月30日 下午12:50:30
	 */
	public JSONObject returnJSONObject(String key, String jsonString) {
		// 先把多层的key解析出来
		String[] keys = key.split(":");
		// 把json数组转为一个JSONObject对象
		JSONObject obj = JSON.parseObject(jsonString);
		JSONArray jsonArray = null;
		for (String string : keys) {
			if (this.isArray(string) != -1) {
				int index = this.isArray(string);
				jsonArray = obj.getJSONArray(this.arrayName(string));
				obj = jsonArray.getJSONObject(index);
				continue;
			}
			obj = obj.getJSONObject(string);
		}
		return obj;
	}

	/**
	 * 这个key可以是多层级的，data:city:cityId，返回的是一个属性:284609
	 * 
	 * @author 致心
	 * @date_time:2019年9月30日 下午3:24:45
	 */
	public String returnString(String key, String jsonString) {
		String substring = key.substring(0, key.lastIndexOf(":"));
		JSONObject o = this.returnJSONObject(substring, jsonString);
		return o.getString(key.substring(key.lastIndexOf(":") + 1));
	}

	/**
	 * 判断传进来的key是不是数组的key，是数组的key就返回数组的位置，否则就返回-1
	 * 
	 * @author 致心
	 * @date_time:2019年9月30日 下午1:16:48
	 */
	private int isArray(String key) {
		if (key.charAt(key.length() - 1) == ']') {
			return Integer
					.valueOf(key.substring(key.length() - 2, key.length() - 1));
		}
		return -1;
	}

	/**
	 * 获取数组的名字
	 * 
	 * @author 致心
	 * @date_time:2019年9月30日 下午1:53:23
	 */
	private String arrayName(String key) {
		return key.substring(0, key.indexOf("["));
	}

	/**
	 * 1、就是基本数据类型，2、就是对象、3就是数组
	 * 
	 * @author 致心
	 * @date_time:2019年9月30日 下午1:32:46
	 */
	// private int whatsObjectForJson(String json) {
	// if (json.charAt(0) == '[') {
	// return 3;
	// } else if (json.charAt(0) == '{') {
	// return 2;
	// } else {
	// return 1;
	// }
	// }

	// private String json = "{\r\n" + " \"code\": 0,\r\n" + " \"data\": {\r\n"
	// + " \"city\": {\r\n"
	// + " \"cityId\": 284609,\r\n" + " \"counname\": \"中国\",\r\n" + " \"name\":
	// \"东城区\",\r\n"
	// + " \"pname\": \"北京市\"\r\n" + " },\r\n" + " \"liveIndex\": {\r\n" + "
	// \"2016-09-01\": [\r\n"
	// + " {\r\n" + " \"day\": \"2016-09-01\",\r\n"
	// + " \"desc\": \"建议用露质面霜打底，水质无油粉底霜，透明粉饼，粉质胭脂。\",\r\n" + " \"name\":
	// \"化妆指数\",\r\n"
	// + " \"status\": \"控油\"\r\n" + " },\r\n" + " {\r\n"
	// + " \"day\": \"2016-09-01\",\r\n" + " \"desc\":
	// \"感冒容易发生，少去人群密集的场所有利于降低感冒的几率。\",\r\n"
	// + " \"name\": \"感冒指数\",\r\n" + " \"status\": \"易发\"\r\n" + " },\r\n"
	// + " {\r\n" + " \"day\": \"2016-09-01\",\r\n"
	// + " \"desc\": \"洗车后，可保持2天车辆清洁，比较适宜洗车。\",\r\n" + " \"name\":
	// \"洗车指数\",\r\n"
	// + " \"status\": \"较适宜\"\r\n" + " },\r\n" + " {\r\n"
	// + " \"day\": \"2016-09-01\",\r\n" + " \"desc\": \"易感人群应适当减少室外活动。\",\r\n"
	// + " \"name\": \"空气污染扩散指数\",\r\n" + " \"status\": \"中\"\r\n" + " },\r\n"
	// + " {\r\n" + " \"day\": \"2016-09-01\",\r\n"
	// + " \"desc\": \"天气较热，衣物精干简洁，室内酌情添加空调衫。\",\r\n" + " \"name\":
	// \"穿衣指数\",\r\n"
	// + " \"status\": \"热\"\r\n" + " },\r\n" + " {\r\n"
	// + " \"day\": \"2016-09-01\",\r\n" + " \"desc\":
	// \"辐射较弱，涂擦SPF12-15、PA+护肤品。\",\r\n"
	// + " \"name\": \"紫外线指数\",\r\n" + " \"status\": \"弱\"\r\n" + " },\r\n"
	// + " {\r\n" + " \"day\": \"2016-09-01\",\r\n"
	// + " \"desc\": \"天气较好，且紫外线辐射不强，适宜户外运动。\",\r\n" + " \"name\":
	// \"运动指数\",\r\n"
	// + " \"status\": \"适宜\"\r\n" + " },\r\n" + " {\r\n"
	// + " \"day\": \"2016-09-01\",\r\n" + " \"desc\":
	// \"气压小幅波动，可能会影响鱼儿的进食。\",\r\n"
	// + " \"name\": \"钓鱼指数\",\r\n" + " \"status\": \"较适宜\"\r\n" + " }\r\n"
	// + " ]\r\n" + " }\r\n" + " },\r\n" + " \"msg\": \"success\",\r\n" + "
	// \"rc\": {\r\n"
	// + " \"c\": 0,\r\n" + " \"p\": \"success\"\r\n" + " }\r\n" + "}";

	public static void main(String[] args) {
		
		String path="D:\\360极速浏览器下载\\ghimi-itchat4j-master\\itchat4j\\target\\itchat4j-1.1.0-src.zip";
		String substring = path.substring(0, path.lastIndexOf("\\"));
		System.err.println(substring);
	}

}
